using System;
using System.Collections.Generic;
using System.Text;

namespace Watchdog2007 {
    [Flags]
    public enum ScheduleDaysOfWeek {
        None = 0,
        Monday = 1,
        Tuesday = 2,
        Wednesday = 4,
        Thursday = 8,
        Friday = 16,
        Saturday = 32,
        Sunday = 64,
        Workdays = Monday | Tuesday | Wednesday | Thursday | Friday,
        All = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday
    }
    [Flags]
    public enum ScheduleDaysOfMonth {
        None = 0,
        Day01 = 1,
        Day02 = Day01 * 2,
        Day03 = Day02 * 2,
        Day04 = Day03 * 2,
        Day05 = Day04 * 2,
        Day06 = Day05 * 2,
        Day07 = Day06 * 2,
        Day08 = Day07 * 2,
        Day09 = Day08 * 2,
        Day10 = Day09 * 2,
        Day11 = Day10 * 2,
        Day12 = Day11 * 2,
        Day13 = Day12 * 2,
        Day14 = Day13 * 2,
        Day15 = Day14 * 2,
        Day16 = Day15 * 2,
        Day17 = Day16 * 2,
        Day18 = Day17 * 2,
        Day19 = Day18 * 2,
        Day20 = Day19 * 2,
        Day21 = Day20 * 2,
        Day22 = Day21 * 2,
        Day23 = Day22 * 2,
        Day24 = Day23 * 2,
        Day25 = Day24 * 2,
        Day26 = Day25 * 2,
        Day27 = Day26 * 2,
        Day28 = Day27 * 2,
        Day29 = Day28 * 2,
        Day30 = Day29 * 2,
        Day31 = Day30 * 2,
        All = Day01 | Day02 | Day03 | Day04 | Day05 | Day06 | Day07 | Day08 | Day09 | Day10 | Day11 | Day12 | Day13 | Day14 | Day15 | Day16 | Day17 | Day18 | Day19 | Day20 | Day21 | Day22 | Day23 | Day24 | Day25 | Day26 | Day27 | Day28 | Day29 | Day30 | Day31
        //All =  // 2147483647 -268435456
    }
    [Flags]
    public enum ScheduleMonths {
        None = 0,
        Januari = 1,
        Februari = 2,
        March = 4,
        April = 8,
        May = 16,
        June = 32,
        Juli = 64,
        August = 128,
        September = 256,
        October = 512,
        November = 1024,
        December = 2048,
        All = Januari | Februari | March | April | May | June | Juli | August | September | October | November | December
    }
    [Flags]
    public enum ScheduleMinutes : byte {
        None = 0,
        //Minute00 = 0x000000000000001,            // 1 
        //Minute01 = 0x000000000000002, // 2
        //Minute02 = 0x000000000000004, // 4
        //Minute03 = 0x000000000000008, // 8
        //Minute04 = 0x000000000000010, // 16
        //Minute05 = 0x000000000000020, // 32
        //Minute06 = 0x000000000000040, // 64
        //Minute07 = 0x000000000000080, // 128
        //Minute08 = 0x000000000000100, // 256
        //Minute09 = 0x000000000000200, // 512
        //Minute10 = 0x000000000000400, // 1024
        //Minute11 = 0x000000000000800, // 2048
        //Minute12 = 0x000000000001000, // 4096
        //Minute13 = 0x000000000002000, // 8192
        //Minute14 = 0x000000000004000, // 16384
        //Minute15 = 0x000000000008000, // 32768
        //Minute16 = 0x000000000010000, // 65536
        //Minute17 = 0x000000000020000, // 131072
        //Minute18 = 0x000000000040000, // 262144
        //Minute19 = 0x000000000080000, // 524288
        //Minute20 = 0x000000000100000, // 1048576
        //Minute21 = 0x000000000200000, // 2097152
        //Minute22 = 0x000000000400000, // 4194304
        //Minute23 = 0x000000000800000, // 8388608
        //Minute24 = 0x000000001000000, // 16777216
        //Minute25 = 0x000000002000000, // 33554432
        //Minute26 = 0x000000004000000, // 67108864
        //Minute27 = 0x000000008000000, // 134217728
        //Minute28 = 0x000000010000000, // 268435456
        //Minute29 = 0x000000020000000, // 536870912
        //Minute30 = 0x000000040000000, // 1073741824
        //Minute31 = 0x000000080000000, // 2147483648
        //Minute32 = 0x000000100000000, // 4294967296
        //Minute33 = 0x000000200000000, // 8589934592
        //Minute34 = 0x000000400000000, // 17179869184
        //Minute35 = 0x000000800000000, // 34359738368
        //Minute36 = 0x000001000000000, // 68719476736
        //Minute37 = 0x000002000000000, // 137438953472
        //Minute38 = 0x000004000000000, // 274877906944
        //Minute39 = 0x000008000000000, // 549755813888
        //Minute40 = 0x000010000000000, // 1099511627776
        //Minute41 = 0x000020000000000, // 2199023255552
        //Minute42 = 0x000040000000000, // 4398046511104
        //Minute43 = 0x000080000000000, // 8796093022208
        //Minute44 = 0x000100000000000, // 17592186044416
        //Minute45 = 0x000200000000000, // 35184372088832
        //Minute46 = 0x000400000000000, // 70368744177664
        //Minute47 = 0x000800000000000, // 140737488355328
        //Minute48 = 0x001000000000000, // 281474976710656
        //Minute49 = 0x002000000000000, // 562949953421312
        //Minute50 = 0x004000000000000, // 1125899906842624
        //Minute51 = 0x008000000000000, // 2251799813685248
        //Minute52 = 0x010000000000000, // 4503599627370496
        //Minute53 = 0x020000000000000, // 9007199254740992
        //Minute54 = 0x040000000000000, // 18014398509481984
        //Minute55 = 0x080000000000000, // 36028797018963968
        //Minute56 = 0x100000000000000, // 72057594037927936
        //Minute57 = 0x200000000000000, // 144115188075855872
        //Minute58 = 0x400000000000000, // 288230376151711744
        //Minute59 = 0x800000000000000, // 576460752303423488
        //All = Minute00 | Minute01 | Minute02 | Minute03 | Minute04 | Minute05 | Minute06 | Minute07 | Minute08 | Minute09 | Minute10 | Minute11 | Minute12 | Minute13 | Minute14 | Minute15 | Minute16 | Minute17 | Minute18 | Minute19 | Minute20 | Minute21 | Minute22 | Minute23 | Minute24 | Minute25 | Minute26 | Minute27 | Minute28 | Minute29 | Minute30 | Minute31 | Minute32 | Minute33 | Minute34 | Minute35 | Minute36 | Minute37 | Minute38 | Minute39 | Minute40 | Minute41 | Minute42 | Minute43 | Minute44 | Minute45 | Minute46 | Minute47 | Minute48 | Minute49 | Minute50 | Minute51 | Minute52 | Minute53 | Minute54 | Minute55 | Minute56 | Minute57 | Minute58 | Minute59 
        //All = 1152921504606846975 // 68719476735


        //-268435456
    }
    [Flags]
    public enum ScheduleHours {
        None = 0,
        Hour00 = 1,
        Hour01 = Hour00 * 2,
        Hour02 = Hour01 * 2,
        Hour03 = Hour02 * 2,
        Hour04 = Hour03 * 2,
        Hour05 = Hour04 * 2,
        Hour06 = Hour05 * 2,
        Hour07 = Hour06 * 2,
        Hour08 = Hour07 * 2,
        Hour09 = Hour08 * 2,
        Hour10 = Hour09 * 2,
        Hour11 = Hour10 * 2,
        Hour12 = Hour11 * 2,
        Hour13 = Hour12 * 2,
        Hour14 = Hour13 * 2,
        Hour15 = Hour14 * 2,
        Hour16 = Hour15 * 2,
        Hour17 = Hour16 * 2,
        Hour18 = Hour17 * 2,
        Hour19 = Hour18 * 2,
        Hour20 = Hour19 * 2,
        Hour21 = Hour20 * 2,
        Hour22 = Hour21 * 2,
        Hour23 = Hour22 * 2,
        All = Hour00 | Hour01 | Hour02 | Hour03 | Hour04 | Hour05 | Hour06 | Hour07 | Hour08 | Hour09 | Hour10 | Hour11 | Hour12 | Hour13 | Hour14 | Hour15 | Hour16 | Hour17 | Hour18 | Hour19 | Hour20 | Hour21 | Hour22 | Hour23
    }
    [Flags]
    public enum ScheduleWeeks {
        None = 0,
        Week1 = 1,
        Week2 = Week1 * 2,
        Week3 = Week2 * 2,
        Week4 = Week3 * 2,
        LastWeek = Week4 * 2,
        All = Week1 | Week2 | Week3 | Week4 | LastWeek
    }
}
